package com.sitanyun.merchant.guide.app;

import android.app.Activity;
import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.View;
import android.view.ViewGroup;

import com.sitanyun.merchant.guide.adapter.AppStateTracker;
import com.sitanyun.merchant.guide.bean.UserInfo;
import com.sitanyun.merchant.guide.view.activity.LoginActivity;
import com.sitanyun.merchant.guide.weiht.SPutils;
import com.sitanyun.merchant.guide.weiht.ShareLogin;
import com.sitanyun.merchant.guide.weiht.SharedPreferenceReal;
import com.sitanyun.merchant.guide.weiht.SharedPreferenceUtil;
import com.sitanyun.merchant.guide.weiht.SharedPreferenceshop;
import com.tencent.imsdk.v2.V2TIMManager;
import com.tencent.imsdk.v2.V2TIMSDKListener;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.tencent.qcloud.tuicore.TUILogin;
import com.tencent.qcloud.tuikit.tuichat.setting.CommonModule;

import androidx.multidex.MultiDex;
import cn.jpush.android.api.JPushInterface;

/**
 * Created by jzl
 * on 2021/12/20.
 */
public class MerchantApp extends Application {
    //程序调试
    public static boolean isDebug = true;
    //自身实例
    private static MerchantApp instance;
    // APP_ID 替换为你的应用从官方网站申请到的合法appID   WX分享
    private static final String APP_ID = "wx7cb638590873ca35";
    /*当前显示的Activity*/
    private Activity activity;
    // IWXAPI 是第三方app和微信通信的openApi接口
    private IWXAPI api;
    private  String TAG="cs";
    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        //极光
        JPushInterface.setDebugMode(false); //允许被debug，正式版本的时候注掉
        JPushInterface.init(this);  //初始化
        CommonModule.init(this);

     //   this.registerActivityLifecycleCallbacks(this);
        MultiDex.install(this);
      //  Urlschat.init(this)
        //接听电话存储判断
        SPutils.init(this,"SPutils");
        //记录是否第一次登陆
        ShareLogin.init(this,"ShareLogin");
        //APP登录相关保存
        SharedPreferenceUtil.init(this,"SharedPreferenceUtil");
         //商店
        SharedPreferenceshop.init(this,"SharedPreferenceshop");
         //实名认证保存
        SharedPreferenceReal.init(this,"SharedPreferenceReal");
        // 在程序启动的时候初始化 TUI 组件，通常是在 Application 的 onCreate 中进行初始化：
        // 开发环境  1400604821   测试 1400622082   正式  1400625849
        TUILogin.init(this, 1400625849, null, null);
      //  this.registerActivityLifecycleCallbacks(this);
        // 通过WXAPIFactory工厂，获取IWXAPI的实例
        api = WXAPIFactory.createWXAPI(this, APP_ID, true);
        // 将应用的appId注册到微信
        api.registerApp(APP_ID);
           //建议动态监听微信启动广播进行注册到微信
        registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {

                // 将该app注册到微信
                api.registerApp(MerchantApp.APP_ID);
            }
        }, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));
        //顶号退出
        initLoginStatusListener();
    //判断前后台
        AppStateTracker.track(this, new AppStateTracker.AppStateChangeListener() {
            @Override
            public void appTurnIntoForeground() {
                // 处理app到前台的逻辑
              // JPushInterface.stopPush(getApplicationContext());
           //     JPushInterface.clearAllNotifications(instance);
                Contains.ZHANDIANNAME="前台";
              //  Log.e("QH","前台");
            }

            @Override
            public void appTurnIntoBackGround() {
                // app处理到到后台的逻辑
              //  Log.e("QH","后台");
                Contains.ZHANDIANNAME="后台";
            }
        });


    }



    //获取自身实例

    public static MerchantApp getInstance() {
        return instance;
    }
///  退出
    public void initLoginStatusListener() {
        V2TIMManager.getInstance().addIMSDKListener(loginStatusListener);
    }
    //检测退出登录
    private final V2TIMSDKListener loginStatusListener = new V2TIMSDKListener() {
        @Override
        public void onKickedOffline() {
          //  ToastUtil.toastLongMessage(MerchantApp.getInstance().getString("帐号已过期，请重新登录"));
            com.sitanyun.merchant.guide.base.ToastUtil.showToast(MerchantApp.getInstance(),"帐号在其他地方登录，请重新登录");
            logout();
        }

        @Override
        public void onUserSigExpired() {
            com.sitanyun.merchant.guide.base.ToastUtil.showToast(MerchantApp.getInstance(),"帐号已经过期，请重新登录");

            logout();
        }
    };
    public void logout() {
       // DemoLog.i(TAG, "logout");
        UserInfo.getInstance().setToken("");
        UserInfo.getInstance().setAutoLogin(false);
        SharedPreferenceUtil.clearAll();
        Intent intent = new Intent(this, LoginActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra("LOGOUT", true);
        startActivity(intent);
    }
    /**
     * 显示View
     *
     * @param view 需要显示到Activity的视图
     */
    public void showView(View view) {
        /*Activity不为空并且没有被释放掉*/
        if (this.activity != null && !this.activity.isFinishing()) {
            /*获取Activity顶层视图,并添加自定义View*/
            ((ViewGroup) this.activity.getWindow().getDecorView()).addView(view);
        }
    }
    /**
     * 隐藏View
     *
     * @param view 需要从Activity中移除的视图
     */
    public void hideView(View view) {
        /*Activity不为空并且没有被释放掉*/
        if (this.activity != null && !this.activity.isFinishing()) {
            /*获取Activity顶层视图*/
            ViewGroup root = ((ViewGroup) this.activity.getWindow().getDecorView());
            /*如果Activity中存在View对象则删除*/
            if (root.indexOfChild(view) != -1) {
                /*从顶层视图中删除*/
                root.removeView(view);
            }
        }
    }

    //分享
    // 三个参数分别是上下文、应用的appId、是否检查签名（默认为false）
    // 三个参数分别是上下文、应用的appId、是否检查签名（默认为false）
//    IWXAPI mWxApi = WXAPIFactory.createWXAPI(this, "你的appId", true);
    // 注册
//  mWxApi.registerApp("你的appId");


}
